package rack.lite.controller

import rack.lite.view.Console as con
import rack.lite.model.Aluno
import rack.lite.model.AlunoDao
import org.apache.commons.lang.StringUtils as sutils

/**
 *
 * @author atila
 */
@Singleton class AlunoBo {

   def create() {
      Aluno aluno = new Aluno()
      println " Criar Aluno ".center(50, "·")
      def value = ""
      // setting the login
      while (true) {
         println "Digite o Login: "
         print con.bash
         value = con.read.nextLine()
         if (value != "" && sutils.isAlpha(value)) {
            if (AlunoDao.instance.exists(value)) {
               println "${con.info} Aluno ${value} já existe."
               continue
            } else {
               aluno.login = value
               break
            }
         } else {
            println "${con.warning} Login não pode ser vazio, e pode conter somente caracteres [a-z]."
            continue
         }
      }

      // setting the nome
      println "Digite o Nome: "
      print con.bash
      value = con.read.nextLine()
      if (value != "" && sutils.isAlphaSpace(value)) {
         aluno.nome = value
      } else {
         aluno.nome = null
      }

      // setting the matricula
      while (true) {
         println "Digite a Matrícula: "
         print con.bash
         value = con.read.nextLine()
         if (value != "" && sutils.isNumeric(value)) {
            aluno.matricula = value.toInteger()
            break
         } else {
            println "${con.warning} Matricula não pode ser vazia, e pode conter somente números."
         }
      }
      // saving in the database
      AlunoDao.instance.create(aluno)
   }

   def delete() {
      println " Deletar Aluno ".center(50, "·")
      def value = ""
      println "Digite o Login: "
      print con.bash
      value = con.read.nextLine()
      if (value != "" && sutils.isAlpha(value)) {
         AlunoDao.instance.delete(value)
      } else {
         println "${con.warning} Erro: login deve conter somente caracteres [a-z]."
      }
   }
}

